package c10异常;

/**
 * <p>总结:
 * 1. 异常栈从最外层到最内层抛出异常的根源的顺序打印异常分组(即调用链顺序), 每种抛出的异常为一组;
 * 2. 每组异常内, 按抛出点到调用入口的倒序打印;
 *
 * 所以, 看第一组可以知道调用什么功能出错了, 找最下面那组的第一句则可快速找到引发异常的根源!
 *
 * @author: Yuanwl
 * @date: 2019/10/19 17:53
 */
public class 异常栈追踪方法 {

    public static void main(String[] args)  {
        try {
            m1();
        } catch (RuntimeException e) {
            e.printStackTrace();
        }
    }

    public static void m1() throws RuntimeException {
        try {
            m2();
        } catch (StringIndexOutOfBoundsException e) {
            throw new RuntimeException("m1抛出异常",e);
        }
    }

    public static void m2() throws StringIndexOutOfBoundsException{
        throw new StringIndexOutOfBoundsException("m2抛出异常");
    }

}
